function lashout=lashsetblk(lash,bname,block)
% lashout=lashsetblk(lash,bname,block)
%
% LASHSETBLK is the opposite side of the coin to LASHGETBLK. It searches
% an LAS header to find a logical data block named bname and replaces
% it with the string matrix called block. (If isempty(bname) then a deletion
% will occur. If the block does not already exist in the header then it
% it is inserted just before the ~A block (which begins the log traces). The
% ~A line MUST be the last line in the header or the header is invalid.
% lash ... string matrix containing the input las header
% bname ... string containing the block name
% block ... string matrix containing the block to be set (inserted)
%
% G.F. Margrave, Department of Geology and Geophysics,
%	University of Calgary, 1996
%
% NOTE: This SOFTWARE may be used by any individual or corporation for any purpose
% with the exception of re-selling or re-distributing the SOFTWARE.
% By using this software, you are agreeing to the terms detailed in this software's
% Matlab source file.

% BEGIN TERMS OF USE LICENSE
%
% This SOFTWARE is maintained by the CREWES Project at the Department
% of Geology and Geophysics of the University of Calgary, Calgary,
% Alberta, Canada.  The copyright and ownership is jointly held by
% its 'AUTHOR' (identified above) and the CREWES Project.  The CREWES
% project may be contacted via email at:  crewesinfo@crewes.org
%
% The term 'SOFTWARE' refers to the Matlab source code, translations to
% any other computer language, or object code
%
% Terms of use of this SOFTWARE
%
% 1) This SOFTWARE may be used by any individual or corporation for any purpose
%    with the exception of re-selling or re-distributing the SOFTWARE.
%
% 2) The AUTHOR and CREWES must be acknowledged in any resulting publications or
%    presentations
%
% 3) This SOFTWARE is provided "as is" with no warranty of any kind
%    either expressed or implied. CREWES makes no warranties or representation
%    as to its accuracy, completeness, or fitness for any purpose. CREWES
%    is under no obligation to provide support of any kind for this SOFTWARE.
%
% 4) CREWES periodically adds, changes, improves or updates this SOFTWARE without
%    notice. New versions will be made available at www.crewes.org .
%
% 5) Use this SOFTWARE at your own risk.
%
% END TERMS OF USE LICENSE
%test ~A
[nlines,m]=size(lash);
if( ~strcmp(lower(lash(nlines,1:2)),'~a') )
	error('Invalid LAS header. The last line must begin with ~A')
end
if(isempty(block))
	block='';
end
%search for the block
[oldblock,ibeg,iend]=lashgetblk(lash,bname);
if(isempty(oldblock))
	top=lash(1:nlines-1,:);
	bot=lash(nlines,:);
else
	top=lash(1:ibeg-1,:);
	bot=lash(iend+1:nlines,:);
end
lashout=str2mat(top,block,bot);
	